home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / music / code.lua next >
Text File  |  2005-07-16  |  15KB  |  414 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     local pokus = getRestartCount()
  8.     local updateCycles = 0
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.hlaskam = 0
  16.         room.hlaskav = 0
  17.         --TODO: allow to ask for music_volume
  18.         local startVolume = optionsGetAsInt("volume_sound")
  19.         room.rozbito = 0
  20.  
  21.         return function()
  22.             updateCycles = updateCycles + 1
  23.             if isReady(small) and isReady(big) and no_dialog() then
  24.                 if amp1:isTalking() or amp2:isTalking() or amp3:isTalking() then
  25.                     if room.hlaskam == 0 and random(1000) < 1 then
  26.                         room.hlaskam = 1
  27.                         addm(10, "ves-m-krab")
  28.                     elseif room.hlaskav == 0 and random(1000) < 2 then
  29.                         room.hlaskav = 1
  30.                         switch(random(2)){
  31.                             [0] = function()
  32.                                 addv(10, "ves-v-veci")
  33.                             end,
  34.                             [1] = function()
  35.                                 addv(10, "ves-v-vyp")
  36.                             end,
  37.                         }
  38.                     elseif startVolume > optionsGetAsInt("volume_sound") and optionsGetAsInt("volume_sound") < 16 then
  39.                         startVolume = 0
  40.                         addm(15, "ves-m-dik")
  41.                         addv(random(20) + 10, "ves-v-stejne")
  42.                     end
  43.                 elseif room.rozbito == 3 then
  44.                     room.rozbito = room.rozbito + 1
  45.                     addv(10, "ves-v-pokoj")
  46.                 elseif room.rozbito == 5 then
  47.                     addm(3, "ves-m-uz")
  48.                     room.rozbito = room.rozbito + 1
  49.                 end
  50.             end
  51.         end
  52.     end
  53.  
  54.     -- -------------------------------------------------------------
  55.     local function prog_init_amp1()
  56.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  57.  
  58.         amp1.stav = 0
  59.  
  60.         return function()
  61.             if amp1.stav == 1 and updateCycles == 2 and not amp1:isTalking() then
  62.                 amp1:talk("ves-ampliony", VOLUME_LOW, -1)
  63.             end
  64.             switch(amp1.stav){
  65.                 [0] = function()
  66.                     if updateCycles == hlava.zac2 then
  67.                         amp1.faze = 0
  68.                         amp1:talk("ves-ampliony", VOLUME_LOW, -1)
  69.                         amp1.stav = amp1.stav + 1
  70.                     end
  71.                 end,
  72.                 [1] = function()
  73.                     if amp1.dir == dir_down then
  74.                         amp1.stav = amp1.stav + 1
  75.                         amp1.afaze = 7
  76.                     elseif odd(game_getCycles()) then
  77.                     local anim_table = {
  78.                             [0] = function()
  79.                                 amp1.afaze = amp1.afaze + 1
  80.                             end,
  81.                             [1] = function()
  82.                                 amp1.afaze = amp1.afaze - 1
  83.                             end,
  84.                             [2] = function()
  85.                                 amp1.afaze = amp1.afaze + 2
  86.                             end,
  87.                             [8] = function()
  88.                                 amp1.afaze = amp1.afaze - 2
  89.                             end,
  90.                             [13] = function()
  91.                                 amp1.faze = -1
  92.                                 amp1.afaze = 0
  93.                             end,
  94.                         }
  95.                         anim_table[3] = anim_table[0]
  96.                         anim_table[4] = anim_table[0]
  97.                         anim_table[7] = anim_table[0]
  98.                         anim_table[12] = anim_table[0]
  99.                         anim_table[6] = anim_table[1]
  100.                         anim_table[9] = anim_table[1]
  101.                         anim_table[10] = anim_table[1]
  102.                         anim_table[5] = anim_table[2]
  103.                         anim_table[11] = anim_table[8]
  104.                         switch(amp1.faze)(anim_table)
  105.  
  106.                         amp1.faze = amp1.faze + 1
  107.                     end
  108.                 end,
  109.                 [2] = function()
  110.                     if amp1.dir ~= dir_down then
  111.                         amp1:killSound()
  112.                         room:talk("sp-smrt", VOLUME_FULL)
  113.                         amp1.afaze = 9
  114.                         amp1.stav = amp1.stav + 1
  115.                         room.rozbito = room.rozbito + 1
  116.                     elseif odd(game_getCycles()) then
  117.                         amp1.afaze = 15 - amp1.afaze
  118.                     end
  119.                 end,
  120.             }
  121.  
  122.             amp1:updateAnim()
  123.         end
  124.     end
  125.  
  126.     -- -------------------------------------------------------------
  127.     local function prog_init_amp2()
  128.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  129.  
  130.         amp2.stav = 0
  131.         amp2.afaze = 3
  132.  
  133.         return function()
  134.             if amp2.stav == 1 and updateCycles == 2 + 3 and not amp2:isTalking() then
  135.                 amp2:talk("ves-ampliony", VOLUME_LOW, -1)
  136.             end
  137.             switch(amp2.stav){
  138.                 [0] = function()
  139.                     if updateCycles == hlava.zac2 + 3 then
  140.                         amp2.faze = 4
  141.                         amp2:talk("ves-ampliony", VOLUME_LOW, -1)
  142.                         amp2.stav = amp2.stav + 1
  143.                     end
  144.                 end,
  145.                 [1] = function()
  146.                     if amp2.dir == dir_down then
  147.                         amp2.stav = amp2.stav + 1
  148.                         amp2.afaze = 7
  149.                     elseif odd(game_getCycles()) then
  150.                         local anim_table = {
  151.                             [0] = function()
  152.                                 amp2.afaze = amp2.afaze + 1
  153.                             end,
  154.                             [1] = function()
  155.                                 amp2.afaze = amp2.afaze - 1
  156.                             end,
  157.                             [2] = function()
  158.                                 amp2.afaze = amp2.afaze + 2
  159.                             end,
  160.                             [8] = function()
  161.                                 amp2.afaze = amp2.afaze - 2
  162.                             end,
  163.                             [13] = function()
  164.                                 amp2.faze = -1
  165.                                 amp2.afaze = 0
  166.                             end,
  167.                         }
  168.                         anim_table[3] = anim_table[0]
  169.                         anim_table[4] = anim_table[0]
  170.                         anim_table[7] = anim_table[0]
  171.                         anim_table[12] = anim_table[0]
  172.                         anim_table[6] = anim_table[1]
  173.                         anim_table[9] = anim_table[1]
  174.                         anim_table[10] = anim_table[1]
  175.                         anim_table[5] = anim_table[2]
  176.                         anim_table[11] = anim_table[8]
  177.                         switch(amp2.faze)(anim_table)
  178.  
  179.                         amp2.faze = amp2.faze + 1
  180.                     end
  181.                 end,
  182.                 [2] = function()
  183.                     if amp2.dir ~= dir_down then
  184.                         amp2:killSound()
  185.                         room:talk("sp-smrt", VOLUME_FULL)
  186.                         amp2.afaze = 9
  187.                         amp2.stav = amp2.stav + 1
  188.                         room.rozbito = room.rozbito + 1
  189.                     elseif odd(game_getCycles()) then
  190.                         amp2.afaze = 15 - amp2.afaze
  191.                     end
  192.                 end,
  193.             }
  194.  
  195.             amp2:updateAnim()
  196.         end
  197.     end
  198.  
  199.     -- -------------------------------------------------------------
  200.     local function prog_init_amp3()
  201.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  202.  
  203.         amp3.stav = 0
  204.         amp3.afaze = 6
  205.  
  206.         return function()
  207.             if amp3.stav == 1 and updateCycles == 2 + 5 and not amp3:isTalking() then
  208.                 amp3:talk("ves-ampliony", VOLUME_LOW, -1)
  209.             end
  210.             switch(amp3.stav){
  211.                 [0] = function()
  212.                     if updateCycles == hlava.zac2 + 5 then
  213.                         amp3.faze = 6
  214.                         amp3:talk("ves-ampliony", VOLUME_LOW, -1)
  215.                         amp3.stav = amp3.stav + 1
  216.                     end
  217.                 end,
  218.                 [1] = function()
  219.                     if amp3.dir == dir_down then
  220.                         amp3.stav = amp3.stav + 1
  221.                         amp3.afaze = 7
  222.                     elseif odd(game_getCycles()) then
  223.                     local anim_table = {
  224.                             [0] = function()
  225.                                 amp3.afaze = amp3.afaze + 1
  226.                             end,
  227.                             [1] = function()
  228.                                 amp3.afaze = amp3.afaze - 1
  229.                             end,
  230.                             [2] = function()
  231.                                 amp3.afaze = amp3.afaze + 2
  232.                             end,
  233.                             [8] = function()
  234.                                 amp3.afaze = amp3.afaze - 2
  235.                             end,
  236.                             [13] = function()
  237.                                 amp3.faze = -1
  238.                                 amp3.afaze = 0
  239.                             end,
  240.                         }
  241.                         anim_table[3] = anim_table[0]
  242.                         anim_table[4] = anim_table[0]
  243.                         anim_table[7] = anim_table[0]
  244.                         anim_table[12] = anim_table[0]
  245.                         anim_table[6] = anim_table[1]
  246.                         anim_table[9] = anim_table[1]
  247.                         anim_table[10] = anim_table[1]
  248.                         anim_table[5] = anim_table[2]
  249.                         anim_table[11] = anim_table[8]
  250.                         switch(amp3.faze)(anim_table)
  251.  
  252.                         amp3.faze = amp3.faze + 1
  253.                     end
  254.                 end,
  255.                 [2] = function()
  256.                     if amp3.dir ~= dir_down then
  257.                         amp3:killSound()
  258.                         room:talk("sp-smrt", VOLUME_FULL)
  259.                         amp3.afaze = 9
  260.                         amp3.stav = amp3.stav + 1
  261.                         room.rozbito = room.rozbito + 1
  262.                     elseif odd(game_getCycles()) then
  263.                         amp3.afaze = 15 - amp3.afaze
  264.                     end
  265.                 end,
  266.             }
  267.  
  268.             amp3:updateAnim()
  269.         end
  270.     end
  271.  
  272.     -- -------------------------------------------------------------
  273.     local function prog_init_hlava()
  274.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  275.  
  276.         hlava.stav = 0
  277.         hlava.zac1 = 30
  278.         hlava.zac2 = 65
  279.  
  280.         return function()
  281.             switch(hlava.stav){
  282.                 [0] = function()
  283.                     if updateCycles == hlava.zac1 then
  284.                         hlava.stav = hlava.stav + 1
  285.                         hlava:talk("ves-hs-hrajeme", VOLUME_FULL)
  286.                     end
  287.                 end,
  288.                 [1] = function()
  289.                     if hlava:isTalking() then
  290.                         switch(random(3)){
  291.                             [0] = function()
  292.                                 hlava.afaze = 0
  293.                             end,
  294.                             [1] = function()
  295.                                 hlava.afaze = 17
  296.                             end,
  297.                             [2] = function()
  298.                                 hlava.afaze = 14
  299.                             end,
  300.                         }
  301.                     else
  302.                         hlava.stav = hlava.stav + 1
  303.                         hlava.afaze = 5
  304.                     end
  305.                 end,
  306.                 [2] = function()
  307.                     if updateCycles >= hlava.zac2 + 10 then
  308.                         hlava.stav = hlava.stav + 1
  309.                     end
  310.                 end,
  311.                 [3] = function()
  312.                     if room.rozbito < 3 then
  313.                         if odd(math.floor(game_getCycles() / 2)) then
  314.                             hlava.afaze = 10
  315.                         else
  316.                             hlava.afaze = 11
  317.                         end
  318.                     else
  319.                         hlava.afaze = 13
  320.                         hlava.stav = hlava.stav + 1
  321.                     end
  322.                 end,
  323.                 [51] = function()
  324.                     hlava:talk("ves-hs-papa")
  325.                     room.rozbito = room.rozbito + 1
  326.                     hlava.stav = 100
  327.                 end,
  328.                 [100] = function()
  329.                     if hlava:isTalking() then
  330.                         if odd(math.floor(game_getCycles() / 2)) then
  331.                             hlava.afaze = 4
  332.                         else
  333.                             hlava.afaze = 18
  334.                         end
  335.                     else
  336.                         room.rozbito = room.rozbito + 1
  337.                         hlava.afaze = 5
  338.                         hlava.stav = hlava.stav + 1
  339.                     end
  340.                 end,
  341.                 default = function()
  342.                     if hlava.stav >= 4 and  hlava.stav <= 50 then
  343.                         hlava.stav = hlava.stav + 1
  344.                     end
  345.                 end,
  346.             }
  347.  
  348.             hlava:updateAnim()
  349.  
  350.         end
  351.     end
  352.  
  353.     -- -------------------------------------------------------------
  354.     local function prog_init_krabik()
  355.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  356.  
  357.         krabik.afaze = 1
  358.  
  359.         return function()
  360.             if amp1:isTalking() or amp2:isTalking() or amp3:isTalking() or hlava:isTalking() then
  361.                 krabik.afaze = random(5)
  362.                 if krabik.afaze == 1 then
  363.                     krabik.afaze = 5
  364.                 end
  365.             elseif random(20) == 0 then
  366.                 krabik.afaze = 1
  367.             end
  368.  
  369.             krabik:updateAnim()
  370.         end
  371.     end
  372.  
  373.     -- --------------------
  374.     local update_table = {}
  375.     local subinit
  376.     subinit = prog_init_room()
  377.     if subinit then
  378.         table.insert(update_table, subinit)
  379.     end
  380.     subinit = prog_init_amp1()
  381.     if subinit then
  382.         table.insert(update_table, subinit)
  383.     end
  384.     subinit = prog_init_amp2()
  385.     if subinit then
  386.         table.insert(update_table, subinit)
  387.     end
  388.     subinit = prog_init_amp3()
  389.     if subinit then
  390.         table.insert(update_table, subinit)
  391.     end
  392.     subinit = prog_init_hlava()
  393.     if subinit then
  394.         table.insert(update_table, subinit)
  395.     end
  396.     subinit = prog_init_krabik()
  397.     if subinit then
  398.         table.insert(update_table, subinit)
  399.     end
  400.     return update_table
  401. end
  402. local update_table = prog_init()
  403.  
  404.  
  405. -- -----------------------------------------------------------------
  406. -- Update
  407. -- -----------------------------------------------------------------
  408. function prog_update()
  409.     for key, subupdate in pairs(update_table) do
  410.         subupdate()
  411.     end
  412. end
  413.  
  414.